/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.uniandes.vehialpes.garantias;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 *
 * @author alvar-go@uniandes.edu.co
 */
public class AdministradorGarantias {
    
    private List<Taller> talleres;
    
    private List<Vehiculo> vehiculos;
    
    private List<Reparacion> reparaciones;

    public AdministradorGarantias() {
        talleres = new ArrayList<Taller>();
        vehiculos = new ArrayList<Vehiculo>();
        reparaciones = new ArrayList<Reparacion>();
    }

    public List<Reparacion> getReparaciones() {
        return reparaciones;
    }

    public List<Taller> getTalleres() {
        return talleres;
    }

    public List<Vehiculo> getVehiculos() {
        return vehiculos;
    }

    public void setReparaciones(List<Reparacion> reparaciones) {
        this.reparaciones = reparaciones;
    }

    public void setTalleres(List<Taller> talleres) {
        this.talleres = talleres;
    }

    public void setVehiculos(List<Vehiculo> vehiculos) {
        this.vehiculos = vehiculos;
    }
    
    public Vehiculo buscarVehiculo(String idVehiculo){
        for(Vehiculo v: vehiculos){
            if(v.getSerialMotor().equals(idVehiculo)){
                return v;
            }
        }
        return null;
    }
    
    public boolean estaEnGarantia(String idVehiculo) throws Exception{
        Vehiculo v = buscarVehiculo(idVehiculo);
        if( v != null ){
            return v.estaEnGarantia();
        }else{
            throw new Exception("El vehiculo no existe");
        }
    }
    
    public Reparacion darReparacion(String idVehiculo){
        for( Reparacion r: reparaciones){
            if(r.getVehiculo().getSerialMotor().equals(idVehiculo)){
                return r;
            }
        }
        return null;
    }
    
    public void registrarReparacion(String taller, String vehiculo, Date fecha, String descripcion, double costo) throws Exception{
        Vehiculo v =  buscarVehiculo(vehiculo);
        Taller t = buscarTaller(taller);
        if( v == null  || t == null){
            throw new Exception("Los datos ingresados no son validos");
        }else{
            Reparacion r = new Reparacion(t, v, fecha, descripcion, costo);
            reparaciones.add(r);
            v.setGarantiaUsuada(true);
        }
    }

    private Taller buscarTaller(String taller) {
        for(Taller t: talleres){
            if(t.getNit().equals(taller)){
                return t;
            }
        }
        return null;
    }
}
